home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Mac Game Programming Gurus / TricksOfTheMacGameProgrammingGurus.iso / Tools / Preditor 2.0 / Preditor Folder / PCMD Source / MPW / StringToC.c < prev   
Encoding:
C/C++ Source or Header  |  1991-09-13  |  1.7 KB  |  75 lines  |  [TEXT/TCEd]

  1. /************************************************************
  2.  
  3.     StringToC.c
  4.     Last Modified: Friday, May 31, 1991 at 9:46 PM
  5.     
  6.     Convert a string to a C version of the string
  7.  
  8.     © Copyright Evatac Software  1988-1990
  9.     All rights reserved
  10.  
  11. ************************************************************/
  12.  
  13. #include <PCMD.h>
  14.  
  15. main(
  16.     unsigned char        *sourceText,
  17.     long                sourceLength,
  18.     unsigned char        *destText,
  19.     long                *destSpace,
  20.     PCMDInfo            *info
  21.     )
  22. {
  23. #pragma unused(info)
  24.     long        i;
  25.     
  26.     if (sourceLength > *destSpace)
  27.         return(kPCMDMoreSpace);
  28.         
  29.     i = sourceLength;
  30.     while (i-- > 0) {
  31.         if (*sourceText == '\n' || *sourceText == '\t' ||
  32.             *sourceText == '\v' || *sourceText == '\b' ||
  33.             *sourceText == '\r' || *sourceText == '\f' ||
  34.             *sourceText == '\a' || *sourceText == '\\' ||
  35.             *sourceText == '\"' || *sourceText == '\'') {
  36.             
  37.             sourceLength++;
  38.             if (sourceLength > *destSpace)
  39.                 return(kPCMDMoreSpace);
  40.             
  41.             switch (*sourceText) {
  42.         
  43.             case '\n':
  44.                 *(destText++) = '\\'; *(destText++) = 'n'; break;
  45.             case '\t':
  46.                 *(destText++) = '\\'; *(destText++) = 't'; break;
  47.             case '\v':
  48.                 *(destText++) = '\\'; *(destText++) = 'v'; break;
  49.             case '\b':
  50.                 *(destText++) = '\\'; *(destText++) = 'b'; break;
  51.             case '\r':
  52.                 *(destText++) = '\\'; *(destText++) = 'r'; break;
  53.             case '\f':
  54.                 *(destText++) = '\\'; *(destText++) = 'f'; break;
  55.             case '\a':
  56.                 *(destText++) = '\\'; *(destText++) = 'a'; break;
  57.             case '\\':
  58.                 *(destText++) = '\\'; *(destText++) = '\\'; break;
  59.             case '\"':
  60.                 *(destText++) = '\\'; *(destText++) = '\"'; break;
  61.             case '\'':
  62.                 *(destText++) = '\\'; *(destText++) = '\''; break;
  63.             }
  64.             sourceText++;
  65.         }
  66.         else
  67.             *(destText++) = *(sourceText++);
  68.     }
  69.     
  70.     *destSpace = sourceLength;
  71.     
  72.     return(kPCMDSuccess);
  73. }
  74.  
  75.